Hi SJH,
Can you isolate a simple case that fails?
Also how are your A B C axes defined? Are they pure angles or
angles with a non zero radius?
The A B C axes can operate in different modes.
#1 They can be "Linear" axis. For example the A axis might be
parallel with the Z axis. In this case I think a move in XYA
should be handled like XYZ. In these linear cases the Trajectory
planner assumes all the axes that move are orthogonal.
#2 They can have a angle and radius. This might be like
engraving on a cylinder pointed in the X direction. In this case
a move in the A Axis results in motion perpendicular to the X
Axis.
#3 Or they can be pure angular Axes (Radius=0). And further a
particular move can involve XYZ or only angles
These higher dimensions makes my head spin.
Regards
TK
Hi Tom,
We are in the process of debugging our 5-axis
changes. Occasionally, we are getting
floating point errors in void RoundCorner(int
is) in TrajectoryPlanner.cpp. We haven't
touched that code, but nevertheless we're
probably torturing it. Just wondering if you
can provide some insight.
It fails at the line
double l=sqrt(R*R-Z*Z);
in the loop where it is generating the facet
segments. R is less than Z. It seems to be
something to do with our segments having
relatively large changes in the A,B axes and small
changes in XYZ. So (local var) 'Z' is computed
from the 5-D "chord length" of the segment,
however the corner radius R is calculated in 3-D
since a 5-D radius is probably difficult to
define.
Perhaps the calculation of Z should ignore the
rotary axes?
I must admit to not understanding the implications of
continuous 5-axis on this algorithm. After all, what
is a corner arc in 5-D? I can understand the concept
of a 5-D quadratic Bezier curve, which basically
amounts to accelerating each axis independently to
achieve the required velocity change. But an arc
doesn't seem to have the required degrees of freedom.
Regards,
SJH